package zhh.tangbao.wechat.api.result.base;

import cn.hutool.core.util.StrUtil;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * <p>
 * 描述
 * </p>
 *
 * @author 粥灰灰
 * <p>2023/4/30</p>
 */

@Data
public class WeChatApiResult {

    /**
     * 优先加载，为了防止多线程同时对ERROR_MESSAGE_MAP进行初始化操作，不采用懒加载的形式
     */
    protected final static Map<Integer, String> ERROR_MESSAGE_MAP = new HashMap<Integer, String>(5) {{
        put(40029, "无效的js_code");
        put(45011, "API 调用太频繁，请稍候再试");
        put(40226, "高风险等级用户，小程序登录拦截");
        put(40163, "code已经被用于登录");
        put(-1, "系统繁忙，此时请开发者稍候再试");
    }};

    /**
     * 错误信息
     */
    protected String errmsg;

    /**
     * 错误码
     */
    protected Integer errcode;


    /**
     * 检测APi接口调用是否正常，如果正常则返回false，反之返回true
     * 需要根据系统涉及的微信平台接口错误码及时更新
     */
    public boolean isError() {
        return ERROR_MESSAGE_MAP.containsKey(this.errcode);
    }

    /**
     * 通过错误码返回人工设定好的相应的错误含义，而不是微信平台接口错误提示
     *
     * @return errmsg
     */
    public String getErrorDetailMsg() {
        String s = ERROR_MESSAGE_MAP.get(this.errcode);
        return StrUtil.isNotEmpty(s) ? s : this.errmsg;

    }

}
